/**
 * @Title: EnumConverter
 * @Package cn.com.yiqi.wsc.portal.common
 * @Description: TODO
 * Copyright: Copyright (c) 2016
 * Company: 成都壹柒互动科技有限公司
 * @author 会员系统组-胥钰淋
 * @date 2017/2/13 10:22
 * @version V1.0
 */
package cn.com.yiqi.wsc.config.common;

import org.apache.commons.beanutils.converters.AbstractConverter;

/**
 *
 *@ClassName: EnumConverter
 * @Description: 枚举类型转换
 * @author 会员系统组-胥钰淋
 * @date 2017/2/13 10:22
 *
 */
public class EnumConverter extends AbstractConverter {

    /** 枚举类型 */
    private final Class<?> enumClass;

    /**
     * @param enumClass
     *            枚举类型
     */
    public EnumConverter(Class<?> enumClass) {
        this(enumClass, null);
    }

    /**
     * @param enumClass
     *            枚举类型
     * @param defaultValue
     *            默认值
     */
    public EnumConverter(Class<?> enumClass, Object defaultValue) {
        super(defaultValue);
        this.enumClass = enumClass;
    }

    /**
     * 获取默认类型
     *
     * @return 默认类型
     */
    @Override
    protected Class<?> getDefaultType() {
        return this.enumClass;
    }

    /**
     * 转换为枚举对象
     *
     * @param type
     *            类型
     * @param value
     *            值
     * @return 枚举对象
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    protected Object convertToType(Class type, Object value) {
        String stringValue = value.toString().trim();
        return Enum.valueOf(type, stringValue);
    }

    /**
     * 转换为字符串
     *
     * @param value
     *            值
     * @return 字符串
     */
    protected String convertToString(Object value) {
        return value.toString();
    }

}
